package com.fs.iot.bean.dto;

import com.fs.common.base.bean.dto.BaseDTO;
import com.fs.iot.bean.GatewayConnectionInfo;
import com.fs.iot.bean.ScriptInfo;
import lombok.Data;

import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 网关数据实体 
 * @author Coder Generator 2025-03-22 15:29:27 
 **/
@Data
public class GatewayDTO extends BaseDTO {
    private static final Pattern pattern = Pattern.compile("data/.*/(.*)");

    /**
     * 网关编号
     */
    private String code;
    /**
     * 网关名称
     */
    private String name;
    /**
     * 网关品牌
     */
    private String brand;
    /**
     * 网关型号
     */
    private String model;
    /**
     * 备注
     */
    private String remark;
    /**
     * 网关类型, 0: 虚拟网关；1：硬件网关
     */
    private Integer type;
    /**
     * 网关协议
     */
    private String protocol;
    /**
     * 网关连接信息
     */
    private GatewayConnectionInfo connectionInfo;

    /**
     * 网关消息转换脚本
     */
    private ScriptInfo converter;

    /**
     * 网关状态，0：离线，1：在线
     */
    private Integer status;
    /**
     * 关联设备数量
     */
    private Integer deviceCount;

    /**
     * 元数据
     */
    private Map<String, Object> metadata;

    /**
     * 获取网关监听主题
     */
    public String getTopic() {
        // 主题格式，data/gatewayCode/deviceCode
        return "data/" + code + "/+";
    }

    /**
     * 解析设备编号
     * @param topic 主题
     * @return 设备编号
     */
    public String parseDeviceCode(String topic) {
        Matcher matcher = pattern.matcher(topic);
        if (matcher.find()) {
            return matcher.group(1);
        }

        return null;
    }

    public static void main(String[] args) {
        Matcher matcher = pattern.matcher("data/test");
        if (matcher.find()) {
            String result = matcher.group(1);
            System.out.println(result);
        }
    }
}